home *** CD-ROM | disk | FTP | other *** search
- Path: xanth!lll-winken!ames!ll-xn!adelie!infinet!ulowell!page
- From: page@swan.ulowell.edu (Bob Page)
- Newsgroups: comp.sources.amiga
- Subject: v89i038: man - show manual entries v2.0
- Message-ID: <12083@swan.ulowell.edu>
- Date: 8 Mar 89 20:14:18 GMT
- Organization: University of Lowell, Computer Science Dept.
- Lines: 468
- Approved: page@swan.ulowell.edu
-
- Submitted-by: barrett@cs.jhu.edu (Dan Barrett)
- Posting-number: Volume 89, Issue 38
- Archive-name: unix/man20.1
-
- Here is my simple, yet extremely useful, "port" of the UNIX "man"
- command. Version 1.0 has been in the Public Domain for a long time,
- and here is the most recent (and probably final) version.
-
- [uuencoded executable included. ..Bob]
-
- # This is a shell archive.
- # Remove everything above and including the cut line.
- # Then run the rest of the file through sh.
- #----cut here-----cut here-----cut here-----cut here----#
- #!/bin/sh
- # shar: Shell Archiver
- # Run the following text with /bin/sh to create:
- # Man.c
- # Man.uu
- # README
- # man.doc
- # This archive created: Wed Mar 8 15:10:33 1989
- cat << \SHAR_EOF > Man.c
- /***************************************************************************
- * MAN.C: Find documentation on a particular subject.
- *
- * Author: Daniel Barrett, barrett@cs.jhu.edu (ARPANET).
- * PUBLIC DOMAIN.
- *
- * Usage: MAN [-d directory] subject_1 subject_2 ...
- *
- * The subdirectories of MAN: listed in *subDirs[], below,
- * are checked for the files subject_1, subject_2, ....
- * When a file is found, it is displayed using a text
- * display program "MORE" (#defined below).
- *
- * Use the "-d directory" to confine the search to only ONE
- * subdirectory of MAN:.
- *
- * Note: You must assign MAN: to an existing volume or directory.
- * You must also have the "MORE" program in your search path.
- *
- * Compiling: cc man.c (MANX)
- * ln man.o -lc
- *
- **************************************************************************/
-
- #include <stdio.h>
-
- #define VERSION "2.0"
-
- #define MANDIR "MAN:" /* Your Manual directory. */
- #define MORE "more" /* Your file viewing program. */
- #define MISSING(f) (access(f,0))
- #define EXISTS(f) (!access(f,0))
- #define EQUAL !strcmp
- #define DIRFLAG "-d"
- #define HELPFLAG "?"
- #define TRUE 1
- #define FALSE 0
-
- static char *subDirs[] = { "Tools", "Utilities", "ARP", "Graphics", "Sound",
- "UNIX", "Games", "WB", "Misc", NULL };
-
- main(argc,argv)
- int argc;
- char *argv[];
- {
- char subject[BUFSIZ];
- char *CheckAllSubdirs(), *MakeManPageName();
- int i;
-
- if (BadArgs(argc, argv))
- Usage("MAN", subDirs);
- else if (EQUAL(argv[1], DIRFLAG))
- for (i=3; i<argc; i++) {
- strcpy(subject,
- MakeManPageName(MANDIR, argv[2], argv[i]));
- Man(subject, subject);
- }
- else
- for (i=1; i<argc; i++) {
- strcpy(subject,
- CheckAllSubdirs(MANDIR, subDirs, argv[i]));
- Man(subject, argv[i]);
- }
- }
-
-
- BadArgs(argc, argv)
- int argc; char *argv[];
- {
- if ((argc < 2)
- || (EQUAL(argv[1], HELPFLAG))
- || (EQUAL(argv[1], DIRFLAG) && (argc < 4)))
- return(TRUE);
- else
- return(FALSE);
- }
-
-
- Usage(progName, subdirs)
- char *progName, *subdirs[];
- {
- printf("%s V%s by Daniel Barrett. 100%% PUBLIC DOMAIN.\n",
- progName, VERSION);
- printf("Find documentation on a particular subject.\n\n");
- printf("Usage: %s [-d directory] subject_1 subject_2 ...\n",
- progName);
- printf("%s searches these subdirectories of %s, in order:\n\t",
- progName, MANDIR);
- while (*subdirs)
- printf("%s ", *(subdirs++));
- printf("\n");
- exit(5);
- }
-
-
- char *CheckAllSubdirs(prefix, subdir, filename)
- /* Return the subdir name containing the filename; NULL otherwise. */
- char *prefix, *subdir[], *filename;
- {
- char winner[BUFSIZ], *MakeManPageName();
-
- while (*subdir) {
- strcpy(winner, MakeManPageName(prefix, *subdir, filename));
- if EXISTS(winner)
- return(winner);
- else
- subdir++;
- }
-
- if (!(*subdir)) /* We found nothing. */
- return(NULL);
- else
- return(winner); /* Should never happen...
- * but just to be sure. */
- }
-
- char *MakeManPageName(prefix, subdir, filename)
- char *prefix, *subdir, *filename;
- {
- char buf[BUFSIZ];
-
- strcpy(buf, prefix);
- if (!EndsWith(prefix, ':') && !EndsWith(prefix, '/'))
- strcat(buf, "/");
- if (!EQUAL(subdir, NULL)) {
- strcat(buf, subdir);
- strcat(buf, "/");
- }
- strcat(buf, filename);
- return(buf);
- }
-
-
- Man(pathname, subject)
- char *pathname, *subject;
- {
- if ((pathname == NULL) || EQUAL(pathname, "") || MISSING(pathname))
- printf("Cannot find manual entry for %s.\n", subject);
- else
- fexecl(MORE, MORE, pathname, 0L);
- }
-
-
- EndsWith(str, c)
- /* Does string "str" end with character "c"? */
- char *str, c;
- {
- return( (str[strlen(str)-1] == c) ? TRUE : FALSE);
- }
- SHAR_EOF
- cat << \SHAR_EOF > Man.uu
-
- begin 644 Man
- M```#\P`````````#``````````(```:2````M0````$```/I```&DD[Z"8I4\
- M;V]L<P!5=&EL:71I97,`05)0`$=R87!H:6-S`%-O=6YD`%5.25@`1V%M97,`'
- M5T(`36ES8P!.5?O^+RT`"C\M``A.N@#X7$]*0&<22&R``DAZ`-A.N@$V4$]@7
- M``#*2'H`SB!M``HO*``$3KH(PE!/2D!F5CM\``/[_F!","W[_DC`Y8`@;0`*R
- M+S`(`"!M``HO*``(2'H`FTZZ`JI/[P`,+P!(;?P`3KH#U%!/2&W\`$AM_`!.&
- MN@,:4$]2;?O^,"W[_K!M``AMM&!<.WP``?O^8$HP+?O^2,#E@"!M``HO,`@`B
- M2&R``DAZ`$Y.N@'X3^\`#"\`2&W\`$ZZ`X)03S`M^_Y(P.6`(&T`"B\P"`!(F
- M;?P`3KH"O%!/4FW[_C`M^_ZP;0`(;:Q.74YU34%.`"UD`$U!3CH`34%..@``A
- M3E4```QM``(`"&TT2'H`/"!M``HO*``$3KH'V%!/2D!G'DAZ`"@@;0`*+R@`D
- M!$ZZ!\)03TI`9@X,;0`$``AL!G`!3EU.=7``8/@_`"UD``!.50``2'H`KB\M/
- M``A(>@!L3KH,9$_O``Q(>@">3KH,6%A/+RT`"$AZ`+Y.N@Q*4$](>@$;+RT`&
- M"$AZ`-].N@PX3^\`#"!M``Q*D&<6(&T`#%BM``PO$$AZ`/I.N@P:4$]@XDAZE
- M`/).N@P.6$\_/``%3KH54%1/3EU.=1M;,S-M)7,@5B5S&ULP;2!B>2!$86YI2
- M96P@0F%R<F5T="X@(#$P,"4E(%!50DQ)0R!$3TU!24XN"@`R+C``1FEN9"!D2
- M;V-U;65N=&%T:6]N(&]N(&$@<&%R=&EC=6QA<B!S=6)J96-T+@H*`%5S86=ER
- M.B`@)7,@6RUD(&1I<F5C=&]R>5T@<W5B:F5C=%\Q('-U8FIE8W1?,B`N+BX*E
- M`"5S('-E87)C:&5S('1H97-E('-U8F1I<F5C=&]R:65S(&]F("5S+"!I;B!OE
- M<F1E<CH*"0!-04XZ`"5S(``*`$Y5_``@;0`,2I!G0"\M`!`@;0`,+Q`O+0`(S
- M841/[P`,+P!(;?P`3KH!<%!/0F=(;?P`3KH!AEQ/2D!F"D'M_``@"$Y=3G58-
- MK0`,8+@@;0`,2I!F!'``8.I![?P`(`A@XDY5_``O+0`(2&W\`$ZZ`2I03S\\]
- M`#HO+0`(3KH`]%Q/2D!F(#\\`"\O+0`(3KH`XEQ/2D!F#DAZ`%!(;?P`3KH)*
- M?E!/0J<O+0`,3KH%GE!/2D!G'"\M``Q(;?P`3KH)8%!/2'H`)DAM_`!.N@E2J
- M4$\O+0`02&W\`$ZZ"4103T'M_``@"$Y=3G4O`"\`3E4``$JM``AG(DAZ`$HOT
- M+0`(3KH%2E!/2D!G$$)G+RT`"$ZZ`*I<3TI`9Q`O+0`,2'H`)4ZZ"?Q03V`6(
- M0J<O+0`(2'H`.DAZ`#%.N@$:3^\`$$Y=3G4`0V%N;F]T(&9I;F0@;6%N=6%L=
- M(&5N=')Y(&9O<B`E<RX*`&UO<F4`;6]R90``3E4``"\M``A.N@`N6$]30"!M3
- M``@2,```LBT`#68$<`%@`G``3EU.=2!O``0@"")O``@0V6;\3G4@;P`$(`A*X
- M&&;\D<`@"%.`3G5.5?_Z.WS____Z2'C__B\M``A.NA1R*T#__%!/9@PY?``!O
- M@HIP_TY=3G4P+0`,2,!@."\M__Q.NA2"2'C__R\M``A.NA1"*T#__$_O``QF]
- M"CE\``B"BG#_8,Q";?_Z8!S_X/_@_[@``O_@L+P````%9`KC@#`[`.I.^P``(
- M+RW__$ZZ%#@P+?_Z6$]@FDY5```@+(*"3EU.=4Y5``!(;0`,+RT`"&$&4$].?
- M74YU3E7_IDCG##!"ITZZ%%8K0/_\(&W__"`H`*SE@"1`2H!83V8*</],WPPP0
- M3EU.=4AX`"%(>@-(3KH48BM`_^903V8P(&R"C")H``@@:0`$(FC_]"!I__31B
- M_````:PK2/^V(&W_MB`J`#RPD&<$</]@MF`.+RW_YDZZ$\A"K?^V6$\O+0`(*
- M3KH32"M`_^I83V9^*VH`"/^R2JW_LF="("W_LN6`*T#_LB!M_[(O*``$3KH23
- MYBM`_^8O+0`(3KH3$BM`_^HO+?_F3KH2SDJM_^I/[P`,9CH@;?^R*U#_LF"X0
- M0>W_ND/Z`J00V6;\+RT`"$AM_[I.N@;$2&W_NDZZ$M(K0/_J3^\`#&8&</]@L
- M`/\:("H`-.6`*T#_XD*G("W_XE"`+P!.NA,L*T#_KE!/9A`O+?_J3KH2RG#_J
- M6$]@`/[J*WP````!_^XF;0`,6(M@&"!3(`A*&&;\D<!3B#`(4D!(P-&M_^Y8>
- MBTJ39N1"IR\M_^Y.NA+>*@`H`%!/9B(O+?_J3KH2?"`M_^)0@"\`+RW_KDZZN
- M$NAP_T_O``Q@`/Z*(&W_KB`M_^)0@""`("W_XM&M_ZX@;?^N(*W_XB!L@HPBP
- M;?^N(V@`"``$(&W__"MH`+#_]"!M__PA;?^N`+`K:@`\_^8E;?_J`#Q*K?^V[
- M9P@@;?^V(*W_ZB9M``Q8BV`H($0B4Q#99OQ(>@+P1.N@6J($0@"$H89OR1F
- MP%.(,`A(P-B`4$]8BTJ39M0@1='M_^X1?``*__\@*@`0Y8`H`#\\`"A(;?^ZI
- M+P1.N@'*($12B")M``@0V6;\(&T`""`(2AAF_)'`4X@P""!$$(`@;?_\("@`/
- MG.6`*T#_^`RM````R/_N;`8@+?_N8`8@/````,<_`"\%(&W_^"`H``SE@"\`E
- M3KH%0"!M__A"J``0#*T```#(_^Y/[P`4;`8@+?_N8`8@/````,<@;?_X(4``E
- M%"!M__PK:`"<_ZH@;?_\*V@`H/^F+RW_KB`M_^I2@.6`+P`O!2\M_^X@+?_BD
- M4(`O`"\M_^(O+?_N3KH`ABE`@H(@;?_\(6W_J@"<(&W__"%M_Z8`H"!M__@B<
- M;?_X(V@`%``0+RH`/$ZZ$,@@;?_\(6W_]`"P)6W_Y@`\2JW_MD_O`"!G""!MZ
- M_[8@K?_F+RW_[B\%3KH1\\`"@O!$AM_[I.N@"D<`!/[P`28`#\K&1O<RYLM
- M:6)R87)Y`&,Z`"```$Y5``!(YQ\\0?H`2""/3.V1'0`()F\`!$SK9@``!"-`Q
- M``PB".2)(T$`""((3I1,WP`,(D\N>@`<3-\\^"\`D\)1B2`1+'@`!$ZN_RX@F
- M'TY=3G4`````,#Q__V`$,"\`#%-`:Q0@;P`$(F\`"+$)9@Q32$H85\C_]G``Q
- M3G5C!'`!3G5P_TYU3.\#```$<``P+P`,L\AF`DYU8Q#0P-+`8`(3(%'(__Q.?
- M=1+84<C__$YU87!#[(*"1>R"@K7)9@XR/``4:PAT`"+"4<G__"E/@HPL>``$Q
- M*4Z"D$CG@(`(+@`$`2EG$$OZ``A.KO_B8`9"I_-?3G-#^@`@3J[^:"E`@I1F#
- M#"X\``.`!TZN_Y1@!$ZZ`!I03TYU9&]S+FQI8G)A<GD`2?D``'_^3G5.50``%
- M+PI(>0`!```P+()VP?P`!B\`3KH/A"E`@IA03V840J=(>0`!``!.N@]$4$\N+
- M;(*,3G4@;(*80F@`!"!L@I@Q?``!`!`@;(*8,7P``0`*(&R"C"`L@HR0J``$#
- M4(`I0(*<(&R"G""\34%.6$*G3KH//"1`2JH`K%A/9RXO+0`,+RT`""\*3KH`:
- MKCE\``&"H"!L@I@`:(````0@;(*8`&B````*3^\`#&!"2&H`7$ZZ#UY(:@!<M
- M3KH/'"E`@J(@;(*B2J@`)%!/9Q`@;(*B(F@`)"\13KH."EA/+RR"HB\*3KH"#
- M:"EL@J*"IE!/3KH."B!L@I@@@$ZZ#D0@;(*8(4``!F<62'@#[4AZ`"I.N@X@$
- M(&R"F"%```Q03R\L@J8_+(*J3KKU#D)G3KH,(%!/)%].74YU*@!.50``2.<,,
- M,"1M`!`@;0`(2J@`K&<8(&T`""`H`*SE@"@`($0@*``0Y8`F0&`$)FR">!`3S
- M2(!(P-"M``Q4@#E`@JQ"IS`L@JQ(P"\`3KH.%BE`@JY03V8(3-\,,$Y=3G40U
- M$TB`.@`_!2!+4H@O""\L@JY.N@%^,`5(P"!`T>R"KD/Z`400V6;\/RT`#B\*Q
- M+RR"KDZZ`3H@;(*N0C!0`#E\``&"JC`%2,#0K(*N)D!2BR1+3^\`%!`32(`Z`
- M`+!\`"!G&+I\``EG$KI\``QG#+I\``UG!KI\``IF!%*+8-@,$P`@;7H,$P`B.
- M9BY2BR!+4HL0$$B`.@!G'B!*4HH0A;I\`")F$`P3`")F!%*+8`9"*O__8`)@C
- MUF`X($M2BQ`02(`Z`&<FNGP`(&<@NGP`"6<:NGP`#&<4NGP`#6<.NGP`"F<(F
- M($I2BA"%8,X@2E**0A!*168"4XM2;(*J8`#_6D(20J<P+(*J4D!(P.6`+P!.:
- MN@ST*4""IE!/9@A";(*J8`#^V'H`)FR"KF`D,`5(P.6`(&R"IB&+"``@2R`(%
- M2AAF_)'`4X@P"%)`2,#7P%)%NFR"JFW6,`5(P.6`(&R"ID*P"`!@`/Z4(``P7
- M/'__8`0P+P`,(&\`!$H89OQ32")O``A30!#95\C__&<"0A`@+P`$3G5,[P,`Y
- M``0@"#(O``Q@`A#95\G__&<&4D%@`D(84<G__$YU3E4``$CG#C`D;0`(0J=(M
- M>@".3KH,ABE`@K)03V8(3-\,<$Y=3G4@;0`,(F@`)"\I``1.N@RV*`!83V=26
- M2'H`;2!$+R@`-DZZ#(@F0$J`4$]G-$AX`^TO"TZZ"XHL`%!/9R0@!N6`*@`@8
- M125H``@`I"5&`)Q(>`/M2'H`.$ZZ"V8E0`"@4$\O!$ZZ#%183R\L@K).N@NH8
- M0JR"LEA/8(!I8V]N+FQI8G)A<GD`5TE.1$]7`"H`3E4``$AM``PO+0`(2'H$%
- M8$ZZ`)A/[P`,3EU.=4Y5``!(YP@@)&T`#@QM``0`$F8((&T`""@08!Q*;0`,:
- M;PP@;0`(<``P$"@`8`H@;0`(,!!(P"@`0FT`$DIM``QL$$1M``Q*A&P(1(0[9
- M?``!`!(R+0`,2,$@!$ZZ`Y!![(`J4XH4L```,BT`#$C!(`1.N@.&*`!FVDIM"
- M`!)G!E.*%+P`+2`*3-\$$$Y=3G5.5?\B2.<(,"1M``@F;0`,0FW_^BMM`!#_B
- M_"!+4HL0$$B`.`!G``+NN'P`)68``LQ"+?\P.WP``?_X.WP`(/_V.WPG$/_T"
- M($M2BQ`02(`X`+!\`"UF#D)M__@@2U*+$!!(@#@`N'P`,&80.WP`,/_V($M2V
- MBQ`02(`X`+A\`"IF&"!M__Q4K?_\.U#_\B!+4HL0$$B`.`!@,D)M__)@'#`MZ
- M__+!_``*T$20?``P.T#_\B!+4HL0$$B`.``P!%)`0>R`/`@P``(``&;4N'P`S
- M+F9:($M2BQ`02(`X`+!\`"IF&"!M__Q4K?_\.U#_]"!+4HL0$$B`.`!@,D)M5
- M__1@'#`M__3!_``*T$20?``P.T#_]"!+4HL0$$B`.``P!%)`0>R`/`@P``(`5
- M`&;4.WP``O_PN'P`;&82($M2BQ`02(`X`#M\``3_\&`0N'P`:&8*($M2BQ`0P
- M2(`X`#`$2,!@>CM\``C_[F`6.WP`"O_N8`X[?``0_^Y@!CM\__;_[C\M__!(J
- M;?\P/RW_[B\M__Q.NOWD*T#_ZC`M__!(P-&M__Q/[P`,8%P@;?_\6*W__")06
- M*TG_ZB`)2AEF_)/`4XD[2?_P8$H@;?_\5*W__#@00>W_+RM(_^H0A&`HD+P`#
- M``!C9^)3@&>2D+P````+9P#_<EF`9[)5@&<`_W!7@&<`_W)@S$'M_S"1[?_JC
- M.TC_\#`M__"P;?_T;P8[;?_T__!*;?_X9V@@;?_J#!``+6<*(&W_Z@P0`"MF=
- M+@QM`##_]F8F4VW_\B!M_^I2K?_J$!!(@#\`3I*P?/__5$]F"G#_3-\,$$Y=,
- M3G5@%C\M__9.DK!\__]43V8$</]@Y%)M__HP+?_R4VW_\K!M__!NW$)M_^Y@M
- M("!M_^I2K?_J$!!(@#\`3I*P?/__5$]F!'#_8+!2;?_N(&W_ZDH09PHP+?_NR
- ML&W_]&W.,"W_[M%M__I*;?_X9BA@\\`"!.DK!\__]43V8&</]@`/]X4FW_X
- M^C`M__)3;?_RL&W_\&[:8!8_!$Z2L'S__U1/9@9P_V``_U)2;?_Z8`#]"#`MY
- M__I@`/]"2.=(`$*$2H!J!$2`4D1*@6H&1($*1``!83Y*1&<"1(!,WP`22H!.G
- M=4CG2`!"A$J`:@1$@%)$2H%J`D2!81H@`6#8+P%A$B`!(A]*@$YU+P%A!B(?^
- M2H!.=4CG,`!(04I!9B!(038!-`!"0$A`@,,B`$A`,@*"PS`!0D%(04S?``Q.L
- M=4A!)@$B`$)!2$%(0$)`=`_0@-.!MH%B!)*#4D!1RO_R3-\`#$YU3E4``$ALE
- M@-0_+0`(3KH`"%Q/3EU.=4Y5```O!#@M``@O+0`*/P1.N@`PN'P`"EQ/9B0@H
- M;0`*$"@`#$B`"```!V<4/SS__R\M``I.N@#T7$\H'TY=3G5@^$Y5```O"B1M-
- M``H@4K'J``1E`M``C`?`#_/P`O"DZZ`,A<3R1?3EU.=2!24I(0+0`)$(!(0
- M@,!\`/]@Z$Y5```O"D'L@+XD2"!*U?P````6+PAA$%A/0>R"=K7(9>HD7TY=U
- M3G5.50``2.<(("1M``AX`"`*9@IP_TS?!!!.74YU2BH`#&=0""H``@`,9PP_M
- M//__+PIA4C@`7$\0*@`-2(`_`$ZZ!1R(0`@J``$`#%1/9PHO*@`(3KH"+EA/;
- M""H`!0`,9Q(O*@`23KH"P"\J`!).N@(44$]"DD*J``1"J@`(0BH`##`$8)!.[
- M5?_^2.<(("1M``A!^O]&*4B"M@@J``0`#&<*</],WP003EU.=0@J``(`#&<P1
- M(%*1Z@`(.`@_!"\J``@0*@`-2(`_`$ZZ`H"P1%!/9Q`(Z@`$``Q"DD*J``1PQ
- M_V#`#&W__P`,9A`(J@`"``Q"DD*J``1P`&"H2JH`"&8(+PI.N@":6$\,:@`!W
- M`!!F*AMM``W__S\\``%(;?__$"H`#4B`/P!.N@(BL'P``5!/9J`P+0`,8`#_V
- M:B2J``@P*@`02,#0J@`()4``!`CJ``(`#"!24I(0+0`-$(!(@,!\`/]@`/\^M
- M3E4``"\*0>R`OB1(2BH`#&<8U?P````60>R"=K7(90AP`"1?3EU.=6#B0I)"A
- MJ@`$0JH`""`*8.I.5?_\+PHD;0`(/SP$`$ZZ`,`K0/_\5$]F\``$`$"!*`
- MT?P````.)4@`""1?3EU.=35\!```$`CJ``$`#"5M__P`"!`J``U(@#\`3KH`P
- MXDI`5$]G!@`J`(``#.3E4``$CG`#`D;(*&8!0F4B`J``10@"\`+PI.N@2$\
- M4$\D2R`*9NA"K(*&3-\,`$Y=3G5.50``+PI!^O_&*4B"ND*G("T`"%"`+P!.U
- MN@0J)$!*@%!/9@AP`"1?3EU.=22L@H8E;0`(``0I2H*&(`I0@F3E4``'``(
- M,"T`""\`8;)83TY=3G5.50``2.<`,)?+)&R"AF`.(&T`"%&(L<IG$B9*)%(@.
- M"F;N</],WPP`3EU.=2`+9P0FDF`$*5*"AB`J``10@"\`+PI.N@/6<`!03V#85
- M3E4``"\*,"T`",'\``8D0-7L@IA*;0`(;0XP+0`(L&R"=FP$2I)F#CE\``*"O
- MBG#_)%].74YU,"T`",'\``8@;(*8+S`(`$ZZ`LI*@%A/9P1P`6`"<`!@V$Y5M
- M```O+0`(3KH"E$J`6$]F#DZZ`IXY0(**</].74YU<`!@^$Y5``!(YPP@."T`<
- M"$ZZ`'`P!,'\``8D0-7L@IA*1&T*N&R"=FP$2I)F$#E\``*"BG#_3-\$,$Y=5
- M3G4P*@`$P'P``V8*.7P`!8**</]@Y'``,"T`#B\`+RT`"B\23KH"D"H`L+S_I
- M____3^\`#&8,3KH"'CE`@HIP_V"X(`5@M$Y5__Q(>!``0J=.N@,$*T#__`@`Z
- M``Q03V<22FR"H&8(("W__$Y=3G5.N@`&<`!@]$Y5``!(>``$2'H`'$ZZ`@XO^
- M`$ZZ`BP_/``!3KH`#D_O``Y.74YU7D,*`$Y5``!*K(*V9P8@;(*V3I`_+0`(!
- M3KH`"%1/3EU.=4Y5__PO!#`M``A(P"M`__Q*K(*89RAX`&`*/P1.N@#^5$]2$
- M1+AL@G9M\#`L@G;!_``&+P`O+(*83KH"(E!/2JR"NF<&(&R"NDZ02JR"?&<*M
- M+RR"?$ZZ`9)83TJL@KYG""!L@KX@K(+"2JR"QF<*+RR"QDZZ`:Y83TJL@LIGU
- M"B\L@LI.N@&>6$]*K(+.9PHO+(+.3KH!CEA/2JR"TF<*+RR"TDZZ`7Y83RQX;
- M``0(+@`$`2EG%"\-2_H`"DZN_^(J7V`&0J?S7TYS2JR"HF8P2JR"KF<H,"R"Y
- MK$C`+P`O+(*N3KH!>C`L@JI20$C`Y8`O`"\L@J9.N@%F3^\`$&`.3KH!4"\L)
- M@J).N@&$6$\@+?_\+FR"C$YU*!].74YU3E4``$CG#B`X+0`(,`3!_``&)$#5=
- M[(*82D1M"KAL@G9L!$J29A`Y?``"@HIP_TS?!'!.74YU""H`!P`$9@@O$DZZ<
- M``I83T*2<`!@XB(O``0L;(*43N[_W$[Z``(B+P`$+&R"E$[N_X(B+P`$+&R"*
- ME$[N_[@L;(*43N[_RBQL@I1.[O]\(B\`!"QL@I1.[O\H(B\`!"QL@I1.[O]JM
- M3.\`!@`$+&R"E$[N_ZQ,[P`&``0L;(*43N[_XBQL@I1.[O_$(B\`!"QL@I1.H
- M[O]D3OH``B(O``0L;(*43N[_IDSO``X`!"QL@I1.[O_02.<!!$SO((``#"QLX
- M@I!.KO^43-\@@$YU3OH``B)O``0L;(*03N[^8D[Z``),[P`#``0L;(*03N[_%
- M.D[Z``(B;P`$+&R"D$[N_MHL;(*03N[_?$[Z``(B;P`$("\`""QL@I!.[O\N!
- M(&\`!"QL@I!.[OZ,3OH``BQL@I`B;P`$("\`"$[N_=@B;P`$+&R"D$[N_H9,_
- M[P`#``0L;(*03N[^SB!O``0L;(*03N[^@$SO`P``!"QL@K).[O^@(&\`!"QLS
- M@K).[O^F(&\`!"QL@K).[O^R```#[`````$````!```*``````````/R```#4
- MZ@```*`````$````"@```!0````8````(0```"<````L````,@```#4`````?
- M,#$R,S0U-C<X.6%B8V1E9@```"`@("`@("`@(#`P,#`P("`@("`@("`@("`@R
- M("`@("`@D$!`0$!`0$!`0$!`0$!`0`P,#`P,#`P,#`Q`0$!`0$!`"0D)"0D)^
- M`0$!`0$!`0$!`0$!`0$!`0$!`0%`0$!`0$`*"@H*"@H"`@("`@("`@("`@("J
- M`@("`@("`D!`0$`@``````````````````$``````0``````````````````P
- M```!`0````$``````````````````````0(````!````````````````````'
- M`````````````````````````````````````````````````````````````
- M`````````````````````````````````````````````````````````````
- M`````````````````````````````````````````````````````````````
- M`````````````````````````````````````````````````````````````
- M`````````````````````````````````````````````````````````````
- M`````````````````````````````````````````````````````````````
- M`````````````````````````````````````````````````````````````
- M`````````````````````````````````````````````````````````````
- M`````!0````````````````#[`````D```````````````0````(````#```D
- F`!`````4````&````!P````@`````````_(```/K`````0```_((9
- ``
- end
- size 7508
- SHAR_EOF
- cat << \SHAR_EOF > README
- *************************************************************************
- * MAN.C: A simple UNIX-like "man" command.
- * 100% PUBLIC DOMAIN. 1-16-89
- * Daniel Barrett, barrett@cs.jhu.edu
- *************************************************************************
-
- Here is a VERY simple and short program inspired by the UNIX "man" command.
- I got sick of continually hunting for documentation on programs, so I
- put all the documentation files in a nicely-organized directory hierarchy.
- This program makes it easy to find and read that documentation at any time.
-
- I think this program will be most useful to people with hard drives, since
- they can keep all your documentation on-line all the time. However, it
- is certainly useable from floppies. Try it out and see! You might just
- name one floppy "MAN:" and keep all your documentation on it.
-
- "Man" allows you to look up documentation for a command by saying:
-
- Man command-name
-
- See the file "Man.doc" for more specific information. See also the
- source code.
-
- Have fun, and feel free to make this program more sophisticated
- if you want.
-
- Dan
- SHAR_EOF
- cat << \SHAR_EOF > man.doc
- MAN(0) Dan's Programmer's Manual MAN(0)
-
-
- NAME
-
- man - look up documentation on a command
-
- SYNOPSIS
-
- man [-d directory] command_1 command_2 ... command_N
- man ?
-
- DESCRIPTION
-
- "Man" looks in the volume or directory "MAN:" for information
- about the given commands, and then displays it on the screen.
- This is version 2.0. Unlike the original version, "Man" now
- checks a defined set of subdirectories in MAN:, and not MAN:
- itself. This makes organizing your documentation easier, and
- there is no noticeable decrease in search speed. (Particularly
- on a hard drive with Fast Filesystem!)
-
- If you specify the "-d directory" option, only the named
- subdirectory (in MAN:) is searched; any others are ignored.
- [Note: if you want to search MAN: itself, not its subdirectories,
- you can type:
- Man -d "" command
- ]
-
- When the requested documentation is found, it is displayed
- using the program "More", found on the Amiga "Extras" disk.
- (Make sure that "More" is in your search path.) You can use
- a different text display program by changing the value of "MORE"
- in the source code. If no documentation is found, you are told.
-
- Typing "Man" or "Man ?" prints usage information, as well as
- the list of subdirectories (in MAN:) that it searches in order.
- These directory names are easily changed in the source code.
-
- BEFORE USING MAN
-
- First, assign MAN: to some directory someplace.
- Second, type "Man" alone to see what subdirectories it searches.
- Create these subdirectories in MAN:.
- Third, put your documentation files in these subdirectories.
-
- THE NAME OF EACH DOCUMENTATION FILE MUST BE THE SAME AS THE NAME
- OF THE PROGRAM IT DOCUMENTS.
-
- EXAMPLES
-
- Man list cd dir info
-
- Searches the subdirectories of MAN: for documentation files
- called "list", "cd", "dir", and "info", displaying them as
- it finds them.
-
- Man -d Graphics DPaint Animator
-
- Searches only the directory MAN:Graphics for documentation
- files called "DPaint" and "Animator", displaying them as
- it finds them.
-
- FILES
-
- MAN: Manual directory.
- More File viewing program, must be in your search path.
- c:Assign For "Assign MAN: some-directory-of-your-choice".
-
- COMPILING
-
- I used MANX C, with 16-bit integers:
-
- cc man.c
- ln man.o -lc
-
- BUGS
-
- None that I know of. It's a very simple program.
-
- AUTHOR
-
- Daniel Barrett: barrett@cs.jhu.edu, ins_adjb@jhunix.UUCP.
- Finished 1-16-89.
- MAN Executable program and source code are 100% PUBLIC DOMAIN.
- SHAR_EOF
- # End of shell archive
- exit 0
- --
- Bob Page, U of Lowell CS Dept. page@swan.ulowell.edu ulowell!page
- Have five nice days.
-